home *** CD-ROM | disk | FTP | other *** search
-
- /* Global definitions used by every source file.
- * Some may be compiler dependent.
- */
- #define MK_FP(seg,ofs) ((void far *) \
- (((unsigned long)(seg) << 16) | (unsigned)(ofs)))
- /*wa6ngo* Switch "a" and "b" below as these functions are called with
- the offset as the first param and the segment as the second*/
- #define pokew(a,b,c) (*((int far*)MK_FP((b),(a))) = (int)(c))
- #define pokeb(a,b,c) (*((char far*)MK_FP((b),(a))) = (char)(c))
- #define peekw(a,b) (*((int far*)MK_FP((b),(a))))
- #define peekb(a,b) (*((char far*)MK_FP((b),(a))))
- #define movblock(so,ss,do,ds,c) movedata(ss,so,ds,do,c)
-
- #define outportw outport
- #define inportw inport
- #define index strchr
- #define rindex strrchr
-
- /* Indexes into binmode in files.c; hook for compilers that have special
- * open modes for binary files
- */
- #define READ_BINARY 0
- #define WRITE_BINARY 1
- #define APPEND_BINARY 2
- extern char *binmode[];
-
- /* not all compilers grok defined() */
- #ifdef NODEFINED
- #define defined(x) (x)
- #endif
-
- /* These two lines assume that your compiler's longs are 32 bits and
- * shorts are 16 bits. It is already assumed that chars are 8 bits,
- * but it doesn't matter if they're signed or unsigned.
- */
- typedef long int32; /* 32-bit signed integer */
- typedef unsigned short int16; /* 16-bit unsigned integer */
- #define uchar(x) ((unsigned char)(x))
- #define MAXINT16 65535 /* Largest 16-bit integer */
-
- /* Since not all compilers support structure assignment, the ASSIGN()
- * macro is used. This controls how it's actually implemented.
- */
- #ifdef NOSTRUCTASSIGN /* Version for old compilers that don't support it */
- #define ASSIGN(a,b) memcpy((char *)&(a),(char *)&(b),sizeof(b));
- #else /* Version for compilers that do */
- #define ASSIGN(a,b) ((a) = (b))
- #endif
-
- /* Define null object pointer in case stdio.h isn't included */
- #ifndef NULL
- /* General purpose NULL pointer */
- #ifdef ATARI_ST
- #define NULL (char *)0 /* MW does not like funny typecasts on void */
- #else
- #define NULL (void *)0
- #endif
- #endif
- #define NULLCHAR (char *)0 /* Null character pointer */
- #define NULLFP (int (*)())0 /* Null pointer to function returning int */
- #define NULLVFP (void (*)())0 /* Null pointer to function returning void */
- #define NULLFILE (FILE *)0 /* Null file pointer */
-
- /* General purpose function macros */
- #define min(x,y) ((x)<(y)?(x):(y)) /* Lesser of two args */
- #define max(x,y) ((x)>(y)?(x):(y)) /* Greater of two args */
-
- /* Convert an address to a LONG value for printing */
- #ifdef MSDOS
- long ptr2long(); /* for fuzzy segment addresses */
- #else
- #define ptr2long(x) ((long) (x)) /* typecast suffices for others */
- #endif
-
- #ifdef MPU8080 /* Assembler routines are available */
- int16 hinibble(),lonibble(),hibyte(),lobyte(),hiword(),loword();
-
- #else
-
- /* Extract a short from a long */
- /* According to my docs, this bug is fixed in MWC 3.0. (from 3.0.6 release
- notes.) -- hyc */
- #if (ATARI_ST && (MWC < 306))
- extern int Sixteen;
- #define hiword(x) ((int16)((x) >> Sixteen)) /* hide compiler bug.. */
- #else
- #define hiword(x) ((int16)((x) >> 16))
- #endif
- #define loword(x) ((int16)(x))
-
- /* Extract a byte from a short */
- #define hibyte(x) (((x) >> 8) & 0xff)
- #define lobyte(x) ((x) & 0xff)
-
- /* Extract nibbles from a byte */
- #define hinibble(x) (((x) >> 4) & 0xf)
- #define lonibble(x) ((x) & 0xf)
-
- #endif
-
- #if (defined(SYS5) || (defined(ATARI_ST) && defined(LATTICE)))
- #define rindex strrchr
- #define index strchr
- #endif
-
- /* Heavily used functions from the standard library */
- char *index(),*rindex(),*malloc(),*calloc(),*ctime(),*tmpnam();
-
- #if ATARI_ST && MICRORTX
- /* the 68000 processor won't let you disable interrupts in user mode
- * therefore, a trap handler has been defined to do this, and it's
- * installed as trap #5. The Mark Williams compiler generates a trap #5
- * when you call the magic function "micro_rtx" (their multi-tasking
- * executive).
- * the trap handler returns the previous processor level as a char.
- */
-
- #define disable() micro_rtx(6)
- #define restore(state) micro_rtx(state)
-
- /* a quick, non-checking free() function as a macro */
- #ifdef QFREE
- #define free(p) ((char *) (p))[-1] |= 1;
- #endif
- #endif
-
-
-
-
-
-
-
-
-
-
-
-